A stream is a sequence of data elements made available over time. A video stream, for example, can comprise a sequence of video data elements made available to a device for viewing the video in an ordered, time-sequenced manner. A client device can request one or more streams from one or more sources. A video stream with an audio stream, for example, may be requested by a client device. The client device then processes the one or more streams as separate streams.
In a more complex example, a client device may want to monitor sensors of a facility, such as motion, heat, doors, alarms, etc. The client device can receive a stream for each sensor in the facility, and process each sensor device as a separate stream. If a new sensor comes online at the facility, the client device may have no way of detecting the presence of the data stream of the new sensor. If the aggregate sensor data for all monitored sensors suddenly increases, such as due to an emergency, as a fire, each sensor monitor process of the client will have to separately decide to increase a number of consumer processes to process the increased sensor data. Separate stream processing of the prior art is not easily scalable, either scaled up or scaled down, in an aggregate fashion. Separate stream processing of the prior art also does not detect new streams coming online that a client device should monitor, or existing sensors going offline that a client device should stop monitoring. Stream processing systems of the prior art also do not aggregate streams matching a client query into a single virtual stream that is easily scaled-in or scaled-out, on demand.